import request from '@/utils/request'

const TEST_CENTER_BASE_URL = '/api/client/v1'

const DCYX_TEST_CENTER_API = {
  /**
   * 获取教材单元测试列表
   * @param params 查询参数
   */
  getUnitTestList: (params: UnitTestListQueryParams) => {
    return request<UnitTestListQueryParams, PageResult<UnitTestItem[]>>({
      url: `${TEST_CENTER_BASE_URL}/test/unit-tests`,
      method: 'get',
      params,
    })
  },

  /**
   * 获取测试记录列表
   * @param params 查询参数
   */
  getTestRecordList: (params: TestRecordListQueryParams) => {
    return request<TestRecordListQueryParams, TestRecordItem[]>({
      url: `${TEST_CENTER_BASE_URL}/test-record/list`,
      method: 'get',
      params,
    })
  },

  /**
   * 开始单元测试
   * @param data 测试参数
   */
  startUnitTest: (data: StartUnitTestPayload) => {
    return request<StartUnitTestPayload, StartUnitTestResponse>({
      url: `${TEST_CENTER_BASE_URL}/start-test`,
      method: 'post',
      data,
    })
  },

  /**
   * 获取测试详情
   * @param testRecordId 测试记录ID
   */
  getTestDetail: (testRecordId: number) => {
    return request<any, TestDetailItem>({
      url: `${TEST_CENTER_BASE_URL}/test-detail/${testRecordId}`,
      method: 'get',
    })
  },

  /**
   * 获取单元测试试卷内容
   * @param unitId 单元ID
   */
  getUnitTestPaper: (unitId: number) => {
    return request<any, UnitTestPaper>({
      url: `${TEST_CENTER_BASE_URL}/test/unit-test/${unitId}`,
      method: 'get',
    })
  },

  /**
   * 提交测试试卷
   * @param data 提交数据
   */
  submitTestPaper: (data: SubmitTestPaperPayload) => {
    return request<SubmitTestPaperPayload, any>({
      url: `${TEST_CENTER_BASE_URL}/test-record/unit-test/save`,
      method: 'post',
      data,
    })
  },
}

export default DCYX_TEST_CENTER_API

// 单元测试列表查询参数
export interface UnitTestListQueryParams extends PageQuery {
  programId: number
}

// 测试记录列表查询参数
export interface TestRecordListQueryParams extends PageQuery {
  programId: number
  unitId?: number
}

/**
 *
 */
// 单元测试项
export interface UnitTestItem {
  id: number
  unitId: number
  unitName: string
  unitIndex: number
  programId: number
  programName: string
  seriesId: number
  totalWords: number
  isCompleted: number // 0-未完成测试, 1-已完成测试
  lastTestScore?: number // 最后一次测试分数
  lastTestTime?: string // 最后一次测试时间
  testCount: number // 测试次数
}

// 测试记录项
export interface TestRecordItem {
  id: string
  seriesId: number | null
  programId: number | null
  unitId: string
  unitName: string
  userId: string
  testId: string
  timeConsuming: number // 测试用时(秒)
  score: number // 测试分数
  questionNumber: number | null
  remark: string | null
  type: number
  studyId: string | null
  wrongWordIds: string // 错误单词ID，逗号分隔
  rightWordIds: string // 正确单词ID，逗号分隔
  unchooseWordIds: string // 未选择单词ID，逗号分隔
  wrongWordSpellings: string[] // 错误单词拼写列表
  rightWordSpellings: string[] // 正确单词拼写列表
  unchooseWordSpellings: string[] // 未选择单词拼写列表
  status: number
  studentId: string | null
  createUser: string | null
  updateUser: string | null
}

// 开始测试参数
export interface StartUnitTestPayload {
  unitId: number
  programId: number
  seriesId: number
}

// 开始测试响应
export interface StartUnitTestResponse {
  testId: number
  testUrl: string
  message: string
}

// 测试详情项
export interface TestDetailItem {
  id: number
  unitId: number
  unitName: string
  programId: number
  programName: string
  testTime: string
  testScore: number
  testComment: string
  testDuration: number
  totalQuestions: number
  correctAnswers: number
  wrongAnswers: number
  errorWords: ErrorWordItem[] // 错误单词列表
  errorQuestionTypes: ErrorQuestionTypeItem[] // 错误题目类型列表
}

// 错误单词项
export interface ErrorWordItem {
  id: number
  wordId: number
  spelling: string
  meaningZhCn: string
  questionType: string // 题目类型: 'memory'|'dictation'|'writing'
  userAnswer: string
  correctAnswer: string
}

// 错误题目类型项
export interface ErrorQuestionTypeItem {
  questionType: string // 题目类型
  questionTypeName: string // 题目类型名称
  errorCount: number // 错误数量
  totalCount: number // 总数量
  errorRate: number // 错误率
}

// 单元测试试卷
export interface UnitTestPaper {
  testId: string
  title: string
  type: number
  second: string // 测试时间（秒）
  totalQuestionNum: string // 总题数
  etcTranslation: TestQuestion[] // 英译中题目
  cteTranslation: TestQuestion[] // 中译英题目
  hearingTranslation: TestQuestion[] // 听力理解题目
}

// 测试题目
export interface TestQuestion {
  wordId: string
  spelling: string
  meaning: string
  answers: TestAnswer[]
}

// 测试答案选项
export interface TestAnswer {
  spelling: string
  meaning: string
  correct: number // 0-错误答案, 1-正确答案
}

// 提交试卷载荷
export interface SubmitTestPaperPayload {
  testId: string
  userId: number // 用户ID
  unitId: number
  score: number // 测试分数
  time_spent: number // 测试用时（秒）
  wrong_word_ids: string // 错误的单词ID，逗号分隔
  right_word_ids: string // 正确的单词ID，逗号分隔
  unchoose_word_ids: string // 未选择的单词ID，逗号分隔
  userAnswers: UserAnswer[] // 详细答案数据（可选，用于调试）
}

// 用户答案
export interface UserAnswer {
  wordId: string
  questionType: string // 'etcTranslation' | 'cteTranslation' | 'hearingTranslation'
  userAnswerIndex: number // 用户选择的答案索引
  isCorrect: boolean // 是否正确
}

/**
 * {"code":"00000","data":null,"msg":"一切ok"}
 *
 */
// 提交试卷响应
// export interface SubmitTestPaperResponse {
//   code: string
//   data: any
//   msg: string
// }
